<?php
/**
 * Description of TableSql
 *
 * @author Raphael
 */
class TableSql extends Table{
    protected $sql;
    protected $conexao;
    protected $consulta;
    protected $resultado;
    
    public function __construct($sql,$conexao = null,$extra = null){
        if(!isset($conexao)){
            global $cnxIntra;
            $this->setConexao($cnxIntra);
        }
        else{
            $this->setConexao($conexao);
        }
        
        $this->set_tableIni("<table {$extra}>\n");
        $this->set_tableFim("\n</table>\n");
        $this->set_corpoIni("\t<tbody>\n");
        $this->set_corpoFim("\t</tbody>");
        $this->setSql($sql);
        
        $this->executarQuery();
        $this->_gerarCabecalho();
        $this->_gerarLinhas();
        
        if($this->getResultado()){
            $this->setRegEncontrado(true);
        }
        else{
            $this->setRegEncontrado(false);
        }
    }

    public function executarQuery(){
        $this->setConsulta(new Consulta($this->getConexao(), $this->getSql()));
        $this->setResultado($this->getConsulta()->getResultados());
    }

    public function _gerarLinhas(){
        $this->_adicionarLinha($this->getResultado());
    }

    public function _gerarCabecalho(){
        $this->_adicionarCabecalho($this->getConsulta()->getCampos());
    }

    public function _adicionarCabecalho(array $valores, $extra = null){
        $cabecalhoIni = "\t<thead {$extra}>\n";
        $linhaIni = "\t\t<tr>\n";
        $colunas = "";
        //$primeiro = true;
        foreach($valores as $valor){
            $valor = strtoupper($valor);
            /*
            if($primeiro){
               $colunas .= "<td><input type='checkbox' name='todos{$valor}'/></td>";
               $primeiro = false;
            }
             *
             */
            //else{
                $colunas .= "\t\t\t<td>{$valor}</td>\n";
            //}
        }
        $linhaFim = "\t\t</tr>\n";
        $cabecalhoFim = "\t</thead>\n";
        $this->set_cabecalho($cabecalhoIni.$linhaIni.$colunas.$linhaFim.$cabecalhoFim);
    }

    public function _adicionarLinha(array $valores,$extra = null){
        $colunas = "";
        $linhaIni = "<tr {$extra}>\n";
        $linhaFim = "</tr>\n";
        foreach($valores as $array){
            $colunas .= $linhaIni;
            $primeiro = true;
            foreach($array as $nome => $valor){
                /*
                if($primeiro){
                   $colunas .= "<td><input type='checkbox' name='{$nome}[]' value='{$valor}'/></td>";
                   $primeiro = false;
                }
                 *
                 */
                //else{
                    $colunas .= "\t<td>{$valor}</td>\n";
                //}
                
            }
            $colunas .= $linhaFim;
        }
        $linhas = $colunas;
        $this->_linhas .= $linhas;
    }

    public function __toString(){
        if($this->getRegEncontrado()){
            $tabela =
                $this->get_tableIni().
                $this->get_cabecalho().
                $this->get_corpoIni().
                $this->get_linhas().
                $this->get_corpoFim().
                $this->get_tableFim();
            return $tabela;
        }
        else{
            $msg = "<h2 id='semRegistro'>Nenhum registro encontrado para este item</h2>";
            return $msg;
        }
    }
}
?>
